//
//  Sequencer.h
//  CocoaSynth
//
//  Created by Jérémy Brault on 06/02/10.
//  Copyright 2010 None. All rights reserved.
//

#import <Cocoa/Cocoa.h>

#import "SequencerProtocol.h"
#import "System.h"

/*!
    @class			Sequencer 
    @superclass		NSObject <SequencerProtocol>
    @abstract		Sequencer est une implementation de SequencerProtocol agissant comme l'horloge du systeme. A chaque top d'horloge, deux operations sont lancées.
					L'horloge commence par demander a tous les modules de lire le sample sur leur port d'entree, puis il demande à ces modules de calculer le
					prochain sampel et de l'ecrire sur le/les ports de sortie.
*/
@interface Sequencer : NSObject <SequencerProtocol> {
	BOOL isStarted;
	NSMutableSet* modules;
	NSOperationQueue* operationQueue;
	
	NSMutableSet* removableModule; 
}

@property (nonatomic, assign) BOOL isStarted;
@property (nonatomic, retain) NSMutableSet* modules;
@property (readonly) NSOperationQueue* operationQueue;
@property (retain)	NSMutableSet* removableModule;

@end
